
package edu.java.homework.hw07.test0606b;

/*
Neka sa dadeni klasovete A, B, C, kato B naslediava A, C naslediava B.
Vseki ot klasovete definira poleto
int a;
1) Posochete i obiasnete, koi ot operatorite v redovete otbeliazani s 
   (a) do (g) shte otpechatat stojnostta na promenlivata a ot klasa C.
2) Posochete i obiasnete, koi ot operatorite v redovete otbeliazani s 
   (a) do (g) shte predizvika greshka pri kompilaciia i zashto. 
*/


class A{
	int a= 1;
}

class B extends A{
	int a= 2;
}

class C extends B{
	int a= 3;
}


public class Test0606b{
	public static void main(String args[]){
		C c= new C();
//		System.out.println(a);            // (a)
		System.out.println(c.a);          // (b)
		System.out.println(((B)c).a);     // (c)
//		System.out.println(super.a);      // (d)
		System.out.println(((A)c).a);     // (e)
//		System.out.println(((A)this).a);  // (f)
	}
}

//1) Posochete i obiasnete, koi ot operatorite v redovete otbeliazani s 
//(a) do (g) shte otpechatat stojnostta na promenlivata a ot klasa C.

//(a)  грешка, "а" не представлява нищо в класа Test0606b
//(b)  ок
//(c)  грешка, ще извика "а"-полето на класа В
//(d)  грешка, супер в случая сочи към Object 
//(e)  грешка, ще извика "а"-полето на класа А
//(f)  грешка, първо самата употреба на this е грешна. И второ, this не сочи към обект на С


//2) Posochete i obiasnete, koi ot operatorite v redovete otbeliazani s 
//(a) do (g) shte predizvika greshka pri kompilaciia i zashto. 

//(a) грешка, "а" не представлява нищо в класа Test0606b
//(b) ок , вика полето "а" на класа С
//(c) ок , вика полето "а" на класа В
//(d) грешка, неправилна употреба на супер. в случая супер сочи към конструктора на Object
//(e) ок , вика полето "а" на класа А
//(f) грешка, неправилна употреба на this.
